#Requires AutoHotkey v2.0

; 脚本核心对象
clip := {

    ; 是否启用热键(0 不启用, 1 启用)
    hotkeyEnabled: 1,

    ; 配置文件路径			   
    configFile: A_ScriptDir "\batData.properties",

    ; 数据文件路径 
    dataFile: A_ScriptDir "\data.txt", 

    ; 粘贴文本            
    texts: [], 
    
    ; 可变粘贴文本索引
    textsVarIndex: [],

    ; 数据文件为空时粘贴的默认文本                                    
    defText: "#无数据#",

    ; 初始索引为 1（AutoHotkey 数组从 1 开始）			   
    index: 1, 

    ; 是否保留索引（1 保留，0 不保留）                                   
    keepIndex: 0,

    ; 上次检测的文件大小			   
    dataFileSize: 0,  

    ; 数据文件是否改变（0 未改变，1 已改变）
    dataFileChanged: 0,

    ; 数据模型(LIST 序列,AUTO-INCREMENT 自增)                             
    dataModel: "LIST",

    ; 数据模型不可改变(0 可以改变, 1 不可改变)
    dataModelFinal: 0
    
}
inputString := "asd{1}#启动{1}sds"


texts := []
regex := "(\{.*?\})"
index := 1

C_auto_increment(Str){

    global clip ; 声明全局变量
    static variable := false ; 判断字符是属于变量字符还是常规字符
    static StrN := "" ; 常规字符串
    static StrV := "" ; 变量字符串

    loop parse, inputString{
        
        if(A_LoopField = "{"){
            variable := true
            Clip.texts.Push(StrN)
            StrN := ""
        }
    
        if(variable){
            StrV .= A_LoopField
        }else{
            StrN .= A_LoopField
        }
        
        if(A_LoopField = "}"){
            variable := false
            Clip.texts.Push(Trim(StrV,"{}"))
            StrV := ""
            Clip.textsVarIndex.Push(Clip.texts.Length)
        }
        
    }
}

j := 1

C_auto_increment(inputString)
loop {
    loop{
        if(index = clip.textsVarIndex[j]){
            MsgBox(index "<-变量->" Clip.texts[index])
            break
        } else {
            MsgBox(index "<-常规->" Clip.texts[index])
            break
        }
        j++
        if(j > clip.textsVarIndex.Length){
            break
        }
    }
    index++
    if(index > Clip.texts.Length){
        break
    }
}
